package tpi.obj3.dsle.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import tpi.obj3.dsle.services.DSLEGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalDSLEParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'/docente:'", "'/dedicacion:'", "';'", "'simple'", "'semi'", "'exclusiva'", "'/materia:'", "'/horasXsemana:'", "'/diasXsemana:'", "'/requiere:'", "'/recurso:'", "'/nombre:'", "'/tiene:'", "'/planificacion:'", "'/semestre:'", "'['", "'Lunes:'", "'Martes:'", "'Miercoles:'", "'Jueves:'", "'Viernes:'", "'Sabado:'", "']'", "'de'", "'a'", "'hs se dicta'", "'en'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int T__31=31;
    public static final int RULE_STRING=5;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__16=16;
    public static final int T__34=34;
    public static final int T__15=15;
    public static final int T__35=35;
    public static final int T__18=18;
    public static final int T__36=36;
    public static final int T__17=17;
    public static final int T__37=37;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalDSLEParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalDSLEParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalDSLEParser.tokenNames; }
    public String getGrammarFileName() { return "../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g"; }



     	private DSLEGrammarAccess grammarAccess;
     	
        public InternalDSLEParser(TokenStream input, DSLEGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Modelo";	
       	}
       	
       	@Override
       	protected DSLEGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModelo"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:67:1: entryRuleModelo returns [EObject current=null] : iv_ruleModelo= ruleModelo EOF ;
    public final EObject entryRuleModelo() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModelo = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:68:2: (iv_ruleModelo= ruleModelo EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:69:2: iv_ruleModelo= ruleModelo EOF
            {
             newCompositeNode(grammarAccess.getModeloRule()); 
            pushFollow(FOLLOW_ruleModelo_in_entryRuleModelo75);
            iv_ruleModelo=ruleModelo();

            state._fsp--;

             current =iv_ruleModelo; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModelo85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModelo"


    // $ANTLR start "ruleModelo"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:76:1: ruleModelo returns [EObject current=null] : ( (lv_elementos_0_0= ruleElemento ) )* ;
    public final EObject ruleModelo() throws RecognitionException {
        EObject current = null;

        EObject lv_elementos_0_0 = null;


         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:79:28: ( ( (lv_elementos_0_0= ruleElemento ) )* )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:80:1: ( (lv_elementos_0_0= ruleElemento ) )*
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:80:1: ( (lv_elementos_0_0= ruleElemento ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID||LA1_0==21||LA1_0==24) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:81:1: (lv_elementos_0_0= ruleElemento )
            	    {
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:81:1: (lv_elementos_0_0= ruleElemento )
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:82:3: lv_elementos_0_0= ruleElemento
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModeloAccess().getElementosElementoParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleElemento_in_ruleModelo130);
            	    lv_elementos_0_0=ruleElemento();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModeloRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elementos",
            	            		lv_elementos_0_0, 
            	            		"Elemento");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModelo"


    // $ANTLR start "entryRuleElemento"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:106:1: entryRuleElemento returns [EObject current=null] : iv_ruleElemento= ruleElemento EOF ;
    public final EObject entryRuleElemento() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElemento = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:107:2: (iv_ruleElemento= ruleElemento EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:108:2: iv_ruleElemento= ruleElemento EOF
            {
             newCompositeNode(grammarAccess.getElementoRule()); 
            pushFollow(FOLLOW_ruleElemento_in_entryRuleElemento166);
            iv_ruleElemento=ruleElemento();

            state._fsp--;

             current =iv_ruleElemento; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleElemento176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElemento"


    // $ANTLR start "ruleElemento"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:115:1: ruleElemento returns [EObject current=null] : (this_Profesor_0= ruleProfesor | this_Materia_1= ruleMateria | this_Recurso_2= ruleRecurso | this_Aula_3= ruleAula | this_Planificacion_4= rulePlanificacion ) ;
    public final EObject ruleElemento() throws RecognitionException {
        EObject current = null;

        EObject this_Profesor_0 = null;

        EObject this_Materia_1 = null;

        EObject this_Recurso_2 = null;

        EObject this_Aula_3 = null;

        EObject this_Planificacion_4 = null;


         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:118:28: ( (this_Profesor_0= ruleProfesor | this_Materia_1= ruleMateria | this_Recurso_2= ruleRecurso | this_Aula_3= ruleAula | this_Planificacion_4= rulePlanificacion ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:119:1: (this_Profesor_0= ruleProfesor | this_Materia_1= ruleMateria | this_Recurso_2= ruleRecurso | this_Aula_3= ruleAula | this_Planificacion_4= rulePlanificacion )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:119:1: (this_Profesor_0= ruleProfesor | this_Materia_1= ruleMateria | this_Recurso_2= ruleRecurso | this_Aula_3= ruleAula | this_Planificacion_4= rulePlanificacion )
            int alt2=5;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                switch ( input.LA(2) ) {
                case 11:
                    {
                    alt2=1;
                    }
                    break;
                case 17:
                    {
                    alt2=2;
                    }
                    break;
                case 13:
                case 23:
                    {
                    alt2=4;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 2, 1, input);

                    throw nvae;
                }

                }
                break;
            case 21:
                {
                alt2=3;
                }
                break;
            case 24:
                {
                alt2=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:120:5: this_Profesor_0= ruleProfesor
                    {
                     
                            newCompositeNode(grammarAccess.getElementoAccess().getProfesorParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleProfesor_in_ruleElemento223);
                    this_Profesor_0=ruleProfesor();

                    state._fsp--;

                     
                            current = this_Profesor_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:130:5: this_Materia_1= ruleMateria
                    {
                     
                            newCompositeNode(grammarAccess.getElementoAccess().getMateriaParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleMateria_in_ruleElemento250);
                    this_Materia_1=ruleMateria();

                    state._fsp--;

                     
                            current = this_Materia_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:140:5: this_Recurso_2= ruleRecurso
                    {
                     
                            newCompositeNode(grammarAccess.getElementoAccess().getRecursoParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleRecurso_in_ruleElemento277);
                    this_Recurso_2=ruleRecurso();

                    state._fsp--;

                     
                            current = this_Recurso_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:150:5: this_Aula_3= ruleAula
                    {
                     
                            newCompositeNode(grammarAccess.getElementoAccess().getAulaParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleAula_in_ruleElemento304);
                    this_Aula_3=ruleAula();

                    state._fsp--;

                     
                            current = this_Aula_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:160:5: this_Planificacion_4= rulePlanificacion
                    {
                     
                            newCompositeNode(grammarAccess.getElementoAccess().getPlanificacionParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_rulePlanificacion_in_ruleElemento331);
                    this_Planificacion_4=rulePlanificacion();

                    state._fsp--;

                     
                            current = this_Planificacion_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElemento"


    // $ANTLR start "entryRuleProfesor"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:176:1: entryRuleProfesor returns [EObject current=null] : iv_ruleProfesor= ruleProfesor EOF ;
    public final EObject entryRuleProfesor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProfesor = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:177:2: (iv_ruleProfesor= ruleProfesor EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:178:2: iv_ruleProfesor= ruleProfesor EOF
            {
             newCompositeNode(grammarAccess.getProfesorRule()); 
            pushFollow(FOLLOW_ruleProfesor_in_entryRuleProfesor366);
            iv_ruleProfesor=ruleProfesor();

            state._fsp--;

             current =iv_ruleProfesor; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProfesor376); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProfesor"


    // $ANTLR start "ruleProfesor"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:185:1: ruleProfesor returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/docente:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/dedicacion:' ( (lv_dedicacion_4_0= ruleDedicacion ) ) otherlv_5= ';' ) ;
    public final EObject ruleProfesor() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_nombre_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_dedicacion_4_0 = null;


         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:188:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/docente:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/dedicacion:' ( (lv_dedicacion_4_0= ruleDedicacion ) ) otherlv_5= ';' ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:189:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/docente:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/dedicacion:' ( (lv_dedicacion_4_0= ruleDedicacion ) ) otherlv_5= ';' )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:189:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/docente:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/dedicacion:' ( (lv_dedicacion_4_0= ruleDedicacion ) ) otherlv_5= ';' )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:189:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/docente:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/dedicacion:' ( (lv_dedicacion_4_0= ruleDedicacion ) ) otherlv_5= ';'
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:189:2: ( (lv_name_0_0= RULE_ID ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:190:1: (lv_name_0_0= RULE_ID )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:190:1: (lv_name_0_0= RULE_ID )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:191:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleProfesor418); 

            			newLeafNode(lv_name_0_0, grammarAccess.getProfesorAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProfesorRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            otherlv_1=(Token)match(input,11,FOLLOW_11_in_ruleProfesor435); 

                	newLeafNode(otherlv_1, grammarAccess.getProfesorAccess().getDocenteKeyword_1());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:211:1: ( (lv_nombre_2_0= RULE_STRING ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:212:1: (lv_nombre_2_0= RULE_STRING )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:212:1: (lv_nombre_2_0= RULE_STRING )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:213:3: lv_nombre_2_0= RULE_STRING
            {
            lv_nombre_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleProfesor452); 

            			newLeafNode(lv_nombre_2_0, grammarAccess.getProfesorAccess().getNombreSTRINGTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProfesorRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"nombre",
                    		lv_nombre_2_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_12_in_ruleProfesor469); 

                	newLeafNode(otherlv_3, grammarAccess.getProfesorAccess().getDedicacionKeyword_3());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:233:1: ( (lv_dedicacion_4_0= ruleDedicacion ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:234:1: (lv_dedicacion_4_0= ruleDedicacion )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:234:1: (lv_dedicacion_4_0= ruleDedicacion )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:235:3: lv_dedicacion_4_0= ruleDedicacion
            {
             
            	        newCompositeNode(grammarAccess.getProfesorAccess().getDedicacionDedicacionParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleDedicacion_in_ruleProfesor490);
            lv_dedicacion_4_0=ruleDedicacion();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProfesorRule());
            	        }
                   		set(
                   			current, 
                   			"dedicacion",
                    		lv_dedicacion_4_0, 
                    		"Dedicacion");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_5=(Token)match(input,13,FOLLOW_13_in_ruleProfesor502); 

                	newLeafNode(otherlv_5, grammarAccess.getProfesorAccess().getSemicolonKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProfesor"


    // $ANTLR start "entryRuleDedicacion"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:263:1: entryRuleDedicacion returns [String current=null] : iv_ruleDedicacion= ruleDedicacion EOF ;
    public final String entryRuleDedicacion() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleDedicacion = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:264:2: (iv_ruleDedicacion= ruleDedicacion EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:265:2: iv_ruleDedicacion= ruleDedicacion EOF
            {
             newCompositeNode(grammarAccess.getDedicacionRule()); 
            pushFollow(FOLLOW_ruleDedicacion_in_entryRuleDedicacion539);
            iv_ruleDedicacion=ruleDedicacion();

            state._fsp--;

             current =iv_ruleDedicacion.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDedicacion550); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDedicacion"


    // $ANTLR start "ruleDedicacion"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:272:1: ruleDedicacion returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_Simple_0= ruleSimple | this_Semi_1= ruleSemi | this_Exclusiva_2= ruleExclusiva ) ;
    public final AntlrDatatypeRuleToken ruleDedicacion() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        AntlrDatatypeRuleToken this_Simple_0 = null;

        AntlrDatatypeRuleToken this_Semi_1 = null;

        AntlrDatatypeRuleToken this_Exclusiva_2 = null;


         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:275:28: ( (this_Simple_0= ruleSimple | this_Semi_1= ruleSemi | this_Exclusiva_2= ruleExclusiva ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:276:1: (this_Simple_0= ruleSimple | this_Semi_1= ruleSemi | this_Exclusiva_2= ruleExclusiva )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:276:1: (this_Simple_0= ruleSimple | this_Semi_1= ruleSemi | this_Exclusiva_2= ruleExclusiva )
            int alt3=3;
            switch ( input.LA(1) ) {
            case 14:
                {
                alt3=1;
                }
                break;
            case 15:
                {
                alt3=2;
                }
                break;
            case 16:
                {
                alt3=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:277:5: this_Simple_0= ruleSimple
                    {
                     
                            newCompositeNode(grammarAccess.getDedicacionAccess().getSimpleParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleSimple_in_ruleDedicacion597);
                    this_Simple_0=ruleSimple();

                    state._fsp--;


                    		current.merge(this_Simple_0);
                        
                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:289:5: this_Semi_1= ruleSemi
                    {
                     
                            newCompositeNode(grammarAccess.getDedicacionAccess().getSemiParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleSemi_in_ruleDedicacion630);
                    this_Semi_1=ruleSemi();

                    state._fsp--;


                    		current.merge(this_Semi_1);
                        
                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:301:5: this_Exclusiva_2= ruleExclusiva
                    {
                     
                            newCompositeNode(grammarAccess.getDedicacionAccess().getExclusivaParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleExclusiva_in_ruleDedicacion663);
                    this_Exclusiva_2=ruleExclusiva();

                    state._fsp--;


                    		current.merge(this_Exclusiva_2);
                        
                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDedicacion"


    // $ANTLR start "entryRuleSimple"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:319:1: entryRuleSimple returns [String current=null] : iv_ruleSimple= ruleSimple EOF ;
    public final String entryRuleSimple() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleSimple = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:320:2: (iv_ruleSimple= ruleSimple EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:321:2: iv_ruleSimple= ruleSimple EOF
            {
             newCompositeNode(grammarAccess.getSimpleRule()); 
            pushFollow(FOLLOW_ruleSimple_in_entryRuleSimple709);
            iv_ruleSimple=ruleSimple();

            state._fsp--;

             current =iv_ruleSimple.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimple720); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimple"


    // $ANTLR start "ruleSimple"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:328:1: ruleSimple returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'simple' ;
    public final AntlrDatatypeRuleToken ruleSimple() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:331:28: (kw= 'simple' )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:333:2: kw= 'simple'
            {
            kw=(Token)match(input,14,FOLLOW_14_in_ruleSimple757); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getSimpleAccess().getSimpleKeyword()); 
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimple"


    // $ANTLR start "entryRuleSemi"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:346:1: entryRuleSemi returns [String current=null] : iv_ruleSemi= ruleSemi EOF ;
    public final String entryRuleSemi() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleSemi = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:347:2: (iv_ruleSemi= ruleSemi EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:348:2: iv_ruleSemi= ruleSemi EOF
            {
             newCompositeNode(grammarAccess.getSemiRule()); 
            pushFollow(FOLLOW_ruleSemi_in_entryRuleSemi797);
            iv_ruleSemi=ruleSemi();

            state._fsp--;

             current =iv_ruleSemi.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSemi808); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSemi"


    // $ANTLR start "ruleSemi"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:355:1: ruleSemi returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'semi' ;
    public final AntlrDatatypeRuleToken ruleSemi() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:358:28: (kw= 'semi' )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:360:2: kw= 'semi'
            {
            kw=(Token)match(input,15,FOLLOW_15_in_ruleSemi845); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getSemiAccess().getSemiKeyword()); 
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSemi"


    // $ANTLR start "entryRuleExclusiva"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:373:1: entryRuleExclusiva returns [String current=null] : iv_ruleExclusiva= ruleExclusiva EOF ;
    public final String entryRuleExclusiva() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleExclusiva = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:374:2: (iv_ruleExclusiva= ruleExclusiva EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:375:2: iv_ruleExclusiva= ruleExclusiva EOF
            {
             newCompositeNode(grammarAccess.getExclusivaRule()); 
            pushFollow(FOLLOW_ruleExclusiva_in_entryRuleExclusiva885);
            iv_ruleExclusiva=ruleExclusiva();

            state._fsp--;

             current =iv_ruleExclusiva.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExclusiva896); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExclusiva"


    // $ANTLR start "ruleExclusiva"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:382:1: ruleExclusiva returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'exclusiva' ;
    public final AntlrDatatypeRuleToken ruleExclusiva() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:385:28: (kw= 'exclusiva' )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:387:2: kw= 'exclusiva'
            {
            kw=(Token)match(input,16,FOLLOW_16_in_ruleExclusiva933); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getExclusivaAccess().getExclusivaKeyword()); 
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExclusiva"


    // $ANTLR start "entryRuleMateria"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:400:1: entryRuleMateria returns [EObject current=null] : iv_ruleMateria= ruleMateria EOF ;
    public final EObject entryRuleMateria() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMateria = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:401:2: (iv_ruleMateria= ruleMateria EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:402:2: iv_ruleMateria= ruleMateria EOF
            {
             newCompositeNode(grammarAccess.getMateriaRule()); 
            pushFollow(FOLLOW_ruleMateria_in_entryRuleMateria972);
            iv_ruleMateria=ruleMateria();

            state._fsp--;

             current =iv_ruleMateria; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMateria982); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMateria"


    // $ANTLR start "ruleMateria"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:409:1: ruleMateria returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/materia:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/horasXsemana:' ( (lv_horasSemanales_4_0= RULE_INT ) ) otherlv_5= '/diasXsemana:' ( (lv_diasSemanales_6_0= RULE_INT ) ) (otherlv_7= '/requiere:' ( (otherlv_8= RULE_ID ) ) )* otherlv_9= ';' ) ;
    public final EObject ruleMateria() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_nombre_2_0=null;
        Token otherlv_3=null;
        Token lv_horasSemanales_4_0=null;
        Token otherlv_5=null;
        Token lv_diasSemanales_6_0=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;

         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:412:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/materia:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/horasXsemana:' ( (lv_horasSemanales_4_0= RULE_INT ) ) otherlv_5= '/diasXsemana:' ( (lv_diasSemanales_6_0= RULE_INT ) ) (otherlv_7= '/requiere:' ( (otherlv_8= RULE_ID ) ) )* otherlv_9= ';' ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:413:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/materia:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/horasXsemana:' ( (lv_horasSemanales_4_0= RULE_INT ) ) otherlv_5= '/diasXsemana:' ( (lv_diasSemanales_6_0= RULE_INT ) ) (otherlv_7= '/requiere:' ( (otherlv_8= RULE_ID ) ) )* otherlv_9= ';' )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:413:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/materia:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/horasXsemana:' ( (lv_horasSemanales_4_0= RULE_INT ) ) otherlv_5= '/diasXsemana:' ( (lv_diasSemanales_6_0= RULE_INT ) ) (otherlv_7= '/requiere:' ( (otherlv_8= RULE_ID ) ) )* otherlv_9= ';' )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:413:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '/materia:' ( (lv_nombre_2_0= RULE_STRING ) ) otherlv_3= '/horasXsemana:' ( (lv_horasSemanales_4_0= RULE_INT ) ) otherlv_5= '/diasXsemana:' ( (lv_diasSemanales_6_0= RULE_INT ) ) (otherlv_7= '/requiere:' ( (otherlv_8= RULE_ID ) ) )* otherlv_9= ';'
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:413:2: ( (lv_name_0_0= RULE_ID ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:414:1: (lv_name_0_0= RULE_ID )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:414:1: (lv_name_0_0= RULE_ID )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:415:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMateria1024); 

            			newLeafNode(lv_name_0_0, grammarAccess.getMateriaAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMateriaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleMateria1041); 

                	newLeafNode(otherlv_1, grammarAccess.getMateriaAccess().getMateriaKeyword_1());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:435:1: ( (lv_nombre_2_0= RULE_STRING ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:436:1: (lv_nombre_2_0= RULE_STRING )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:436:1: (lv_nombre_2_0= RULE_STRING )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:437:3: lv_nombre_2_0= RULE_STRING
            {
            lv_nombre_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleMateria1058); 

            			newLeafNode(lv_nombre_2_0, grammarAccess.getMateriaAccess().getNombreSTRINGTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMateriaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"nombre",
                    		lv_nombre_2_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_3=(Token)match(input,18,FOLLOW_18_in_ruleMateria1075); 

                	newLeafNode(otherlv_3, grammarAccess.getMateriaAccess().getHorasXsemanaKeyword_3());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:457:1: ( (lv_horasSemanales_4_0= RULE_INT ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:458:1: (lv_horasSemanales_4_0= RULE_INT )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:458:1: (lv_horasSemanales_4_0= RULE_INT )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:459:3: lv_horasSemanales_4_0= RULE_INT
            {
            lv_horasSemanales_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleMateria1092); 

            			newLeafNode(lv_horasSemanales_4_0, grammarAccess.getMateriaAccess().getHorasSemanalesINTTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMateriaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"horasSemanales",
                    		lv_horasSemanales_4_0, 
                    		"INT");
            	    

            }


            }

            otherlv_5=(Token)match(input,19,FOLLOW_19_in_ruleMateria1109); 

                	newLeafNode(otherlv_5, grammarAccess.getMateriaAccess().getDiasXsemanaKeyword_5());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:479:1: ( (lv_diasSemanales_6_0= RULE_INT ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:480:1: (lv_diasSemanales_6_0= RULE_INT )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:480:1: (lv_diasSemanales_6_0= RULE_INT )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:481:3: lv_diasSemanales_6_0= RULE_INT
            {
            lv_diasSemanales_6_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleMateria1126); 

            			newLeafNode(lv_diasSemanales_6_0, grammarAccess.getMateriaAccess().getDiasSemanalesINTTerminalRuleCall_6_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMateriaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"diasSemanales",
                    		lv_diasSemanales_6_0, 
                    		"INT");
            	    

            }


            }

            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:497:2: (otherlv_7= '/requiere:' ( (otherlv_8= RULE_ID ) ) )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==20) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:497:4: otherlv_7= '/requiere:' ( (otherlv_8= RULE_ID ) )
            	    {
            	    otherlv_7=(Token)match(input,20,FOLLOW_20_in_ruleMateria1144); 

            	        	newLeafNode(otherlv_7, grammarAccess.getMateriaAccess().getRequiereKeyword_7_0());
            	        
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:501:1: ( (otherlv_8= RULE_ID ) )
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:502:1: (otherlv_8= RULE_ID )
            	    {
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:502:1: (otherlv_8= RULE_ID )
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:503:3: otherlv_8= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getMateriaRule());
            	    	        }
            	            
            	    otherlv_8=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleMateria1164); 

            	    		newLeafNode(otherlv_8, grammarAccess.getMateriaAccess().getRecursosRecursoCrossReference_7_1_0()); 
            	    	

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

            otherlv_9=(Token)match(input,13,FOLLOW_13_in_ruleMateria1178); 

                	newLeafNode(otherlv_9, grammarAccess.getMateriaAccess().getSemicolonKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMateria"


    // $ANTLR start "entryRuleRecurso"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:526:1: entryRuleRecurso returns [EObject current=null] : iv_ruleRecurso= ruleRecurso EOF ;
    public final EObject entryRuleRecurso() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRecurso = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:527:2: (iv_ruleRecurso= ruleRecurso EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:528:2: iv_ruleRecurso= ruleRecurso EOF
            {
             newCompositeNode(grammarAccess.getRecursoRule()); 
            pushFollow(FOLLOW_ruleRecurso_in_entryRuleRecurso1214);
            iv_ruleRecurso=ruleRecurso();

            state._fsp--;

             current =iv_ruleRecurso; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRecurso1224); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRecurso"


    // $ANTLR start "ruleRecurso"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:535:1: ruleRecurso returns [EObject current=null] : (otherlv_0= '/recurso:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '/nombre:' ( (lv_nombre_3_0= RULE_STRING ) ) ) ;
    public final EObject ruleRecurso() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_nombre_3_0=null;

         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:538:28: ( (otherlv_0= '/recurso:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '/nombre:' ( (lv_nombre_3_0= RULE_STRING ) ) ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:539:1: (otherlv_0= '/recurso:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '/nombre:' ( (lv_nombre_3_0= RULE_STRING ) ) )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:539:1: (otherlv_0= '/recurso:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '/nombre:' ( (lv_nombre_3_0= RULE_STRING ) ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:539:3: otherlv_0= '/recurso:' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '/nombre:' ( (lv_nombre_3_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleRecurso1261); 

                	newLeafNode(otherlv_0, grammarAccess.getRecursoAccess().getRecursoKeyword_0());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:543:1: ( (lv_name_1_0= RULE_ID ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:544:1: (lv_name_1_0= RULE_ID )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:544:1: (lv_name_1_0= RULE_ID )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:545:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRecurso1278); 

            			newLeafNode(lv_name_1_0, grammarAccess.getRecursoAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRecursoRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,22,FOLLOW_22_in_ruleRecurso1295); 

                	newLeafNode(otherlv_2, grammarAccess.getRecursoAccess().getNombreKeyword_2());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:565:1: ( (lv_nombre_3_0= RULE_STRING ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:566:1: (lv_nombre_3_0= RULE_STRING )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:566:1: (lv_nombre_3_0= RULE_STRING )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:567:3: lv_nombre_3_0= RULE_STRING
            {
            lv_nombre_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRecurso1312); 

            			newLeafNode(lv_nombre_3_0, grammarAccess.getRecursoAccess().getNombreSTRINGTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRecursoRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"nombre",
                    		lv_nombre_3_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRecurso"


    // $ANTLR start "entryRuleAula"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:591:1: entryRuleAula returns [EObject current=null] : iv_ruleAula= ruleAula EOF ;
    public final EObject entryRuleAula() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAula = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:592:2: (iv_ruleAula= ruleAula EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:593:2: iv_ruleAula= ruleAula EOF
            {
             newCompositeNode(grammarAccess.getAulaRule()); 
            pushFollow(FOLLOW_ruleAula_in_entryRuleAula1353);
            iv_ruleAula=ruleAula();

            state._fsp--;

             current =iv_ruleAula; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAula1363); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAula"


    // $ANTLR start "ruleAula"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:600:1: ruleAula returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '/tiene:' ( (otherlv_2= RULE_ID ) ) )* otherlv_3= ';' ) ;
    public final EObject ruleAula() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;

         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:603:28: ( ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '/tiene:' ( (otherlv_2= RULE_ID ) ) )* otherlv_3= ';' ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:604:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '/tiene:' ( (otherlv_2= RULE_ID ) ) )* otherlv_3= ';' )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:604:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '/tiene:' ( (otherlv_2= RULE_ID ) ) )* otherlv_3= ';' )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:604:2: ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '/tiene:' ( (otherlv_2= RULE_ID ) ) )* otherlv_3= ';'
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:604:2: ( (lv_name_0_0= RULE_ID ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:605:1: (lv_name_0_0= RULE_ID )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:605:1: (lv_name_0_0= RULE_ID )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:606:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAula1405); 

            			newLeafNode(lv_name_0_0, grammarAccess.getAulaAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAulaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:622:2: (otherlv_1= '/tiene:' ( (otherlv_2= RULE_ID ) ) )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==23) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:622:4: otherlv_1= '/tiene:' ( (otherlv_2= RULE_ID ) )
            	    {
            	    otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleAula1423); 

            	        	newLeafNode(otherlv_1, grammarAccess.getAulaAccess().getTieneKeyword_1_0());
            	        
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:626:1: ( (otherlv_2= RULE_ID ) )
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:627:1: (otherlv_2= RULE_ID )
            	    {
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:627:1: (otherlv_2= RULE_ID )
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:628:3: otherlv_2= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getAulaRule());
            	    	        }
            	            
            	    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAula1443); 

            	    		newLeafNode(otherlv_2, grammarAccess.getAulaAccess().getRecursosRecursoCrossReference_1_1_0()); 
            	    	

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);

            otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleAula1457); 

                	newLeafNode(otherlv_3, grammarAccess.getAulaAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAula"


    // $ANTLR start "entryRulePlanificacion"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:651:1: entryRulePlanificacion returns [EObject current=null] : iv_rulePlanificacion= rulePlanificacion EOF ;
    public final EObject entryRulePlanificacion() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePlanificacion = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:652:2: (iv_rulePlanificacion= rulePlanificacion EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:653:2: iv_rulePlanificacion= rulePlanificacion EOF
            {
             newCompositeNode(grammarAccess.getPlanificacionRule()); 
            pushFollow(FOLLOW_rulePlanificacion_in_entryRulePlanificacion1493);
            iv_rulePlanificacion=rulePlanificacion();

            state._fsp--;

             current =iv_rulePlanificacion; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlanificacion1503); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlanificacion"


    // $ANTLR start "rulePlanificacion"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:660:1: rulePlanificacion returns [EObject current=null] : (otherlv_0= '/planificacion:' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= '/semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '[' otherlv_5= 'Lunes:' ( (lv_lunes_6_0= ruleDia ) ) otherlv_7= 'Martes:' ( (lv_martes_8_0= ruleDia ) ) otherlv_9= 'Miercoles:' ( (lv_miercoles_10_0= ruleDia ) ) otherlv_11= 'Jueves:' ( (lv_jueves_12_0= ruleDia ) ) otherlv_13= 'Viernes:' ( (lv_viernes_14_0= ruleDia ) ) otherlv_15= 'Sabado:' ( (lv_sabado_16_0= ruleDia ) ) otherlv_17= ']' ) ;
    public final EObject rulePlanificacion() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_anio_1_0=null;
        Token otherlv_2=null;
        Token lv_semestre_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        EObject lv_lunes_6_0 = null;

        EObject lv_martes_8_0 = null;

        EObject lv_miercoles_10_0 = null;

        EObject lv_jueves_12_0 = null;

        EObject lv_viernes_14_0 = null;

        EObject lv_sabado_16_0 = null;


         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:663:28: ( (otherlv_0= '/planificacion:' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= '/semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '[' otherlv_5= 'Lunes:' ( (lv_lunes_6_0= ruleDia ) ) otherlv_7= 'Martes:' ( (lv_martes_8_0= ruleDia ) ) otherlv_9= 'Miercoles:' ( (lv_miercoles_10_0= ruleDia ) ) otherlv_11= 'Jueves:' ( (lv_jueves_12_0= ruleDia ) ) otherlv_13= 'Viernes:' ( (lv_viernes_14_0= ruleDia ) ) otherlv_15= 'Sabado:' ( (lv_sabado_16_0= ruleDia ) ) otherlv_17= ']' ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:664:1: (otherlv_0= '/planificacion:' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= '/semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '[' otherlv_5= 'Lunes:' ( (lv_lunes_6_0= ruleDia ) ) otherlv_7= 'Martes:' ( (lv_martes_8_0= ruleDia ) ) otherlv_9= 'Miercoles:' ( (lv_miercoles_10_0= ruleDia ) ) otherlv_11= 'Jueves:' ( (lv_jueves_12_0= ruleDia ) ) otherlv_13= 'Viernes:' ( (lv_viernes_14_0= ruleDia ) ) otherlv_15= 'Sabado:' ( (lv_sabado_16_0= ruleDia ) ) otherlv_17= ']' )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:664:1: (otherlv_0= '/planificacion:' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= '/semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '[' otherlv_5= 'Lunes:' ( (lv_lunes_6_0= ruleDia ) ) otherlv_7= 'Martes:' ( (lv_martes_8_0= ruleDia ) ) otherlv_9= 'Miercoles:' ( (lv_miercoles_10_0= ruleDia ) ) otherlv_11= 'Jueves:' ( (lv_jueves_12_0= ruleDia ) ) otherlv_13= 'Viernes:' ( (lv_viernes_14_0= ruleDia ) ) otherlv_15= 'Sabado:' ( (lv_sabado_16_0= ruleDia ) ) otherlv_17= ']' )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:664:3: otherlv_0= '/planificacion:' ( (lv_anio_1_0= RULE_INT ) ) otherlv_2= '/semestre:' ( (lv_semestre_3_0= RULE_INT ) ) otherlv_4= '[' otherlv_5= 'Lunes:' ( (lv_lunes_6_0= ruleDia ) ) otherlv_7= 'Martes:' ( (lv_martes_8_0= ruleDia ) ) otherlv_9= 'Miercoles:' ( (lv_miercoles_10_0= ruleDia ) ) otherlv_11= 'Jueves:' ( (lv_jueves_12_0= ruleDia ) ) otherlv_13= 'Viernes:' ( (lv_viernes_14_0= ruleDia ) ) otherlv_15= 'Sabado:' ( (lv_sabado_16_0= ruleDia ) ) otherlv_17= ']'
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_rulePlanificacion1540); 

                	newLeafNode(otherlv_0, grammarAccess.getPlanificacionAccess().getPlanificacionKeyword_0());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:668:1: ( (lv_anio_1_0= RULE_INT ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:669:1: (lv_anio_1_0= RULE_INT )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:669:1: (lv_anio_1_0= RULE_INT )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:670:3: lv_anio_1_0= RULE_INT
            {
            lv_anio_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_rulePlanificacion1557); 

            			newLeafNode(lv_anio_1_0, grammarAccess.getPlanificacionAccess().getAnioINTTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPlanificacionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"anio",
                    		lv_anio_1_0, 
                    		"INT");
            	    

            }


            }

            otherlv_2=(Token)match(input,25,FOLLOW_25_in_rulePlanificacion1574); 

                	newLeafNode(otherlv_2, grammarAccess.getPlanificacionAccess().getSemestreKeyword_2());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:690:1: ( (lv_semestre_3_0= RULE_INT ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:691:1: (lv_semestre_3_0= RULE_INT )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:691:1: (lv_semestre_3_0= RULE_INT )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:692:3: lv_semestre_3_0= RULE_INT
            {
            lv_semestre_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_rulePlanificacion1591); 

            			newLeafNode(lv_semestre_3_0, grammarAccess.getPlanificacionAccess().getSemestreINTTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPlanificacionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"semestre",
                    		lv_semestre_3_0, 
                    		"INT");
            	    

            }


            }

            otherlv_4=(Token)match(input,26,FOLLOW_26_in_rulePlanificacion1608); 

                	newLeafNode(otherlv_4, grammarAccess.getPlanificacionAccess().getLeftSquareBracketKeyword_4());
                
            otherlv_5=(Token)match(input,27,FOLLOW_27_in_rulePlanificacion1620); 

                	newLeafNode(otherlv_5, grammarAccess.getPlanificacionAccess().getLunesKeyword_5());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:716:1: ( (lv_lunes_6_0= ruleDia ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:717:1: (lv_lunes_6_0= ruleDia )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:717:1: (lv_lunes_6_0= ruleDia )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:718:3: lv_lunes_6_0= ruleDia
            {
             
            	        newCompositeNode(grammarAccess.getPlanificacionAccess().getLunesDiaParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleDia_in_rulePlanificacion1641);
            lv_lunes_6_0=ruleDia();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	        }
                   		set(
                   			current, 
                   			"lunes",
                    		lv_lunes_6_0, 
                    		"Dia");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_7=(Token)match(input,28,FOLLOW_28_in_rulePlanificacion1653); 

                	newLeafNode(otherlv_7, grammarAccess.getPlanificacionAccess().getMartesKeyword_7());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:738:1: ( (lv_martes_8_0= ruleDia ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:739:1: (lv_martes_8_0= ruleDia )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:739:1: (lv_martes_8_0= ruleDia )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:740:3: lv_martes_8_0= ruleDia
            {
             
            	        newCompositeNode(grammarAccess.getPlanificacionAccess().getMartesDiaParserRuleCall_8_0()); 
            	    
            pushFollow(FOLLOW_ruleDia_in_rulePlanificacion1674);
            lv_martes_8_0=ruleDia();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	        }
                   		set(
                   			current, 
                   			"martes",
                    		lv_martes_8_0, 
                    		"Dia");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_9=(Token)match(input,29,FOLLOW_29_in_rulePlanificacion1686); 

                	newLeafNode(otherlv_9, grammarAccess.getPlanificacionAccess().getMiercolesKeyword_9());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:760:1: ( (lv_miercoles_10_0= ruleDia ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:761:1: (lv_miercoles_10_0= ruleDia )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:761:1: (lv_miercoles_10_0= ruleDia )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:762:3: lv_miercoles_10_0= ruleDia
            {
             
            	        newCompositeNode(grammarAccess.getPlanificacionAccess().getMiercolesDiaParserRuleCall_10_0()); 
            	    
            pushFollow(FOLLOW_ruleDia_in_rulePlanificacion1707);
            lv_miercoles_10_0=ruleDia();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	        }
                   		set(
                   			current, 
                   			"miercoles",
                    		lv_miercoles_10_0, 
                    		"Dia");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_11=(Token)match(input,30,FOLLOW_30_in_rulePlanificacion1719); 

                	newLeafNode(otherlv_11, grammarAccess.getPlanificacionAccess().getJuevesKeyword_11());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:782:1: ( (lv_jueves_12_0= ruleDia ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:783:1: (lv_jueves_12_0= ruleDia )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:783:1: (lv_jueves_12_0= ruleDia )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:784:3: lv_jueves_12_0= ruleDia
            {
             
            	        newCompositeNode(grammarAccess.getPlanificacionAccess().getJuevesDiaParserRuleCall_12_0()); 
            	    
            pushFollow(FOLLOW_ruleDia_in_rulePlanificacion1740);
            lv_jueves_12_0=ruleDia();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	        }
                   		set(
                   			current, 
                   			"jueves",
                    		lv_jueves_12_0, 
                    		"Dia");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_13=(Token)match(input,31,FOLLOW_31_in_rulePlanificacion1752); 

                	newLeafNode(otherlv_13, grammarAccess.getPlanificacionAccess().getViernesKeyword_13());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:804:1: ( (lv_viernes_14_0= ruleDia ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:805:1: (lv_viernes_14_0= ruleDia )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:805:1: (lv_viernes_14_0= ruleDia )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:806:3: lv_viernes_14_0= ruleDia
            {
             
            	        newCompositeNode(grammarAccess.getPlanificacionAccess().getViernesDiaParserRuleCall_14_0()); 
            	    
            pushFollow(FOLLOW_ruleDia_in_rulePlanificacion1773);
            lv_viernes_14_0=ruleDia();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	        }
                   		set(
                   			current, 
                   			"viernes",
                    		lv_viernes_14_0, 
                    		"Dia");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_15=(Token)match(input,32,FOLLOW_32_in_rulePlanificacion1785); 

                	newLeafNode(otherlv_15, grammarAccess.getPlanificacionAccess().getSabadoKeyword_15());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:826:1: ( (lv_sabado_16_0= ruleDia ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:827:1: (lv_sabado_16_0= ruleDia )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:827:1: (lv_sabado_16_0= ruleDia )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:828:3: lv_sabado_16_0= ruleDia
            {
             
            	        newCompositeNode(grammarAccess.getPlanificacionAccess().getSabadoDiaParserRuleCall_16_0()); 
            	    
            pushFollow(FOLLOW_ruleDia_in_rulePlanificacion1806);
            lv_sabado_16_0=ruleDia();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPlanificacionRule());
            	        }
                   		set(
                   			current, 
                   			"sabado",
                    		lv_sabado_16_0, 
                    		"Dia");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_17=(Token)match(input,33,FOLLOW_33_in_rulePlanificacion1818); 

                	newLeafNode(otherlv_17, grammarAccess.getPlanificacionAccess().getRightSquareBracketKeyword_17());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlanificacion"


    // $ANTLR start "entryRuleDia"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:856:1: entryRuleDia returns [EObject current=null] : iv_ruleDia= ruleDia EOF ;
    public final EObject entryRuleDia() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDia = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:857:2: (iv_ruleDia= ruleDia EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:858:2: iv_ruleDia= ruleDia EOF
            {
             newCompositeNode(grammarAccess.getDiaRule()); 
            pushFollow(FOLLOW_ruleDia_in_entryRuleDia1854);
            iv_ruleDia=ruleDia();

            state._fsp--;

             current =iv_ruleDia; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDia1864); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDia"


    // $ANTLR start "ruleDia"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:865:1: ruleDia returns [EObject current=null] : ( (lv_clase_0_0= ruleClase ) )* ;
    public final EObject ruleDia() throws RecognitionException {
        EObject current = null;

        EObject lv_clase_0_0 = null;


         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:868:28: ( ( (lv_clase_0_0= ruleClase ) )* )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:869:1: ( (lv_clase_0_0= ruleClase ) )*
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:869:1: ( (lv_clase_0_0= ruleClase ) )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==34) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:870:1: (lv_clase_0_0= ruleClase )
            	    {
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:870:1: (lv_clase_0_0= ruleClase )
            	    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:871:3: lv_clase_0_0= ruleClase
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getDiaAccess().getClaseClaseParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleClase_in_ruleDia1909);
            	    lv_clase_0_0=ruleClase();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getDiaRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"clase",
            	            		lv_clase_0_0, 
            	            		"Clase");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDia"


    // $ANTLR start "entryRuleClase"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:895:1: entryRuleClase returns [EObject current=null] : iv_ruleClase= ruleClase EOF ;
    public final EObject entryRuleClase() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClase = null;


        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:896:2: (iv_ruleClase= ruleClase EOF )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:897:2: iv_ruleClase= ruleClase EOF
            {
             newCompositeNode(grammarAccess.getClaseRule()); 
            pushFollow(FOLLOW_ruleClase_in_entryRuleClase1945);
            iv_ruleClase=ruleClase();

            state._fsp--;

             current =iv_ruleClase; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleClase1955); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClase"


    // $ANTLR start "ruleClase"
    // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:904:1: ruleClase returns [EObject current=null] : (otherlv_0= 'de' ( (lv_inicio_1_0= RULE_INT ) ) otherlv_2= 'a' ( (lv_fin_3_0= RULE_INT ) ) otherlv_4= 'hs se dicta' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'en' ( (otherlv_7= RULE_ID ) ) ) ;
    public final EObject ruleClase() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_inicio_1_0=null;
        Token otherlv_2=null;
        Token lv_fin_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;

         enterRule(); 
            
        try {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:907:28: ( (otherlv_0= 'de' ( (lv_inicio_1_0= RULE_INT ) ) otherlv_2= 'a' ( (lv_fin_3_0= RULE_INT ) ) otherlv_4= 'hs se dicta' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'en' ( (otherlv_7= RULE_ID ) ) ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:908:1: (otherlv_0= 'de' ( (lv_inicio_1_0= RULE_INT ) ) otherlv_2= 'a' ( (lv_fin_3_0= RULE_INT ) ) otherlv_4= 'hs se dicta' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'en' ( (otherlv_7= RULE_ID ) ) )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:908:1: (otherlv_0= 'de' ( (lv_inicio_1_0= RULE_INT ) ) otherlv_2= 'a' ( (lv_fin_3_0= RULE_INT ) ) otherlv_4= 'hs se dicta' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'en' ( (otherlv_7= RULE_ID ) ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:908:3: otherlv_0= 'de' ( (lv_inicio_1_0= RULE_INT ) ) otherlv_2= 'a' ( (lv_fin_3_0= RULE_INT ) ) otherlv_4= 'hs se dicta' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'en' ( (otherlv_7= RULE_ID ) )
            {
            otherlv_0=(Token)match(input,34,FOLLOW_34_in_ruleClase1992); 

                	newLeafNode(otherlv_0, grammarAccess.getClaseAccess().getDeKeyword_0());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:912:1: ( (lv_inicio_1_0= RULE_INT ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:913:1: (lv_inicio_1_0= RULE_INT )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:913:1: (lv_inicio_1_0= RULE_INT )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:914:3: lv_inicio_1_0= RULE_INT
            {
            lv_inicio_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleClase2009); 

            			newLeafNode(lv_inicio_1_0, grammarAccess.getClaseAccess().getInicioINTTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getClaseRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"inicio",
                    		lv_inicio_1_0, 
                    		"INT");
            	    

            }


            }

            otherlv_2=(Token)match(input,35,FOLLOW_35_in_ruleClase2026); 

                	newLeafNode(otherlv_2, grammarAccess.getClaseAccess().getAKeyword_2());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:934:1: ( (lv_fin_3_0= RULE_INT ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:935:1: (lv_fin_3_0= RULE_INT )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:935:1: (lv_fin_3_0= RULE_INT )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:936:3: lv_fin_3_0= RULE_INT
            {
            lv_fin_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleClase2043); 

            			newLeafNode(lv_fin_3_0, grammarAccess.getClaseAccess().getFinINTTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getClaseRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"fin",
                    		lv_fin_3_0, 
                    		"INT");
            	    

            }


            }

            otherlv_4=(Token)match(input,36,FOLLOW_36_in_ruleClase2060); 

                	newLeafNode(otherlv_4, grammarAccess.getClaseAccess().getHsSeDictaKeyword_4());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:956:1: ( (otherlv_5= RULE_ID ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:957:1: (otherlv_5= RULE_ID )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:957:1: (otherlv_5= RULE_ID )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:958:3: otherlv_5= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getClaseRule());
            	        }
                    
            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleClase2080); 

            		newLeafNode(otherlv_5, grammarAccess.getClaseAccess().getMateriaMateriaCrossReference_5_0()); 
            	

            }


            }

            otherlv_6=(Token)match(input,37,FOLLOW_37_in_ruleClase2092); 

                	newLeafNode(otherlv_6, grammarAccess.getClaseAccess().getEnKeyword_6());
                
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:973:1: ( (otherlv_7= RULE_ID ) )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:974:1: (otherlv_7= RULE_ID )
            {
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:974:1: (otherlv_7= RULE_ID )
            // ../tpi.obj3.dsle/src-gen/tpi/obj3/dsle/parser/antlr/internal/InternalDSLE.g:975:3: otherlv_7= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getClaseRule());
            	        }
                    
            otherlv_7=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleClase2112); 

            		newLeafNode(otherlv_7, grammarAccess.getClaseAccess().getAulaAulaCrossReference_7_0()); 
            	

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClase"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModelo_in_entryRuleModelo75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModelo85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElemento_in_ruleModelo130 = new BitSet(new long[]{0x0000000001200012L});
    public static final BitSet FOLLOW_ruleElemento_in_entryRuleElemento166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElemento176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProfesor_in_ruleElemento223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMateria_in_ruleElemento250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRecurso_in_ruleElemento277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAula_in_ruleElemento304 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlanificacion_in_ruleElemento331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProfesor_in_entryRuleProfesor366 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProfesor376 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleProfesor418 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_11_in_ruleProfesor435 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleProfesor452 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleProfesor469 = new BitSet(new long[]{0x000000000001C000L});
    public static final BitSet FOLLOW_ruleDedicacion_in_ruleProfesor490 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleProfesor502 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDedicacion_in_entryRuleDedicacion539 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDedicacion550 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimple_in_ruleDedicacion597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSemi_in_ruleDedicacion630 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExclusiva_in_ruleDedicacion663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimple_in_entryRuleSimple709 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimple720 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleSimple757 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSemi_in_entryRuleSemi797 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSemi808 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleSemi845 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExclusiva_in_entryRuleExclusiva885 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExclusiva896 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleExclusiva933 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMateria_in_entryRuleMateria972 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMateria982 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleMateria1024 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleMateria1041 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleMateria1058 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleMateria1075 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleMateria1092 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleMateria1109 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleMateria1126 = new BitSet(new long[]{0x0000000000102000L});
    public static final BitSet FOLLOW_20_in_ruleMateria1144 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleMateria1164 = new BitSet(new long[]{0x0000000000102000L});
    public static final BitSet FOLLOW_13_in_ruleMateria1178 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRecurso_in_entryRuleRecurso1214 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRecurso1224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleRecurso1261 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRecurso1278 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleRecurso1295 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRecurso1312 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAula_in_entryRuleAula1353 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAula1363 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAula1405 = new BitSet(new long[]{0x0000000000802000L});
    public static final BitSet FOLLOW_23_in_ruleAula1423 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAula1443 = new BitSet(new long[]{0x0000000000802000L});
    public static final BitSet FOLLOW_13_in_ruleAula1457 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlanificacion_in_entryRulePlanificacion1493 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlanificacion1503 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_rulePlanificacion1540 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_rulePlanificacion1557 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_rulePlanificacion1574 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_rulePlanificacion1591 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_rulePlanificacion1608 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_rulePlanificacion1620 = new BitSet(new long[]{0x0000000410000000L});
    public static final BitSet FOLLOW_ruleDia_in_rulePlanificacion1641 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulePlanificacion1653 = new BitSet(new long[]{0x0000000420000000L});
    public static final BitSet FOLLOW_ruleDia_in_rulePlanificacion1674 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_rulePlanificacion1686 = new BitSet(new long[]{0x0000000440000000L});
    public static final BitSet FOLLOW_ruleDia_in_rulePlanificacion1707 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_rulePlanificacion1719 = new BitSet(new long[]{0x0000000480000000L});
    public static final BitSet FOLLOW_ruleDia_in_rulePlanificacion1740 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_rulePlanificacion1752 = new BitSet(new long[]{0x0000000500000000L});
    public static final BitSet FOLLOW_ruleDia_in_rulePlanificacion1773 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_rulePlanificacion1785 = new BitSet(new long[]{0x0000000600000000L});
    public static final BitSet FOLLOW_ruleDia_in_rulePlanificacion1806 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_rulePlanificacion1818 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDia_in_entryRuleDia1854 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDia1864 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleClase_in_ruleDia1909 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_ruleClase_in_entryRuleClase1945 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleClase1955 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleClase1992 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleClase2009 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleClase2026 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleClase2043 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleClase2060 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleClase2080 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleClase2092 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleClase2112 = new BitSet(new long[]{0x0000000000000002L});

}